<template>
  <div>App</div>
</template>

<script lang="ts">
/*
  组件间通信方案：
    vue2：
      1. props 父 -> 子
      2. 自定义事件 子 -> 父
      3. .sync 父 <-> 子
      4. v-model 父 <-> 子
      5. vuex 兄弟、祖孙
      6. 插槽 父 <-> 子（通信标签数据）
      7. 全局事件总线 兄弟、祖孙
      8. $refs $parent $children(不推荐) 父 <-> 子
      9. $attrs $listeners 属性/事件透传
      10. provide/inject 祖孙
      
    vue3：
      1. props 父 -> 子
      2. 自定义事件 子 -> 父 （子组件需要声明接受自定义事件 emits: ['xxx']）
      3. v-model 父 <-> 子
        如果只有一个数据需要双向数据绑定：v-model
        如果只有多个数据需要双向数据绑定：v-model:xxx
      4. vuex / pinia(更好)
      5. 插槽 父 <-> 子（通信标签数据）
      6. 第三方库：mitt 来实现全局事件总线 兄弟、祖孙（删除了$on\$once\$off，所以默认不能使用全局事件总线）
      7. $refs $parent 父 <-> 子 （删除了$children）
      8. $attrs 属性/事件透传（删除了$listeners，内部保存在$attrs）
      9. provide/inject 祖孙
*/

export default {
  name: "App",
};
</script>

<style></style>
